package struct;

public class Test {
    public static void main(String[] args) {
        int arr[][]=new int[11][11];
        arr[3][4]=3;
        arr[4][4]=3;
        arr[5][4]=3;
        arr[6][4]=3;
        arr[7][4]=3;
        int sum=0;//稀疏数组中非0的元素个数
        for(int[] tem:arr){
            for(int data:tem){
                if(data!=0){
                    sum++;
                }
            }
        }
        //打印数组
        for(int[] tem:arr){
            for(int data:tem){
                System.out.print(data+"\t");
            }
            System.out.println("");
        }
        //把数组转为稀疏数组
        int [][]sparsearr=new int[sum+1][3];
        sparsearr[0][0]=11;
        sparsearr[0][1]=11;
        sparsearr[0][2]=sum;
        //把非0元素传给稀疏数组
        int count=0;//用来标记非0元素的下标
        for(int i=0;i<11;i++){
            for(int j=0;j<11;j++){
                if(arr[i][j]!=0){
                    count++;
                    sparsearr[count][0]=i;
                    sparsearr[count][1]=j;
                    sparsearr[count][2]=arr[i][j];
                }
            }
        }
        //打印稀疏数组
        for(int[] tem:sparsearr){
            for(int data:tem){
                System.out.print(data+"\t");
            }
            System.out.println("");
        }
        //把稀疏数组转为正常数组
        int newarr[][]=new int[sparsearr[0][0]][sparsearr[0][1]];
        for(int i=1;i<sum;i++){
            newarr[sparsearr[i][0]][sparsearr[i][1]]=sparsearr[i][2];
        }
        //打印新数组
        for(int[] tem:newarr){
            for(int data:tem){
                System.out.print(data+"\t");
            }
            System.out.println("");
        }



    }
}
